package com.qc.sys.controller;


import com.qc.sys.common.DataGridView;
import com.qc.sys.common.ResultObj;
import com.qc.sys.entity.SysMenu;
import com.qc.sys.service.SysMenuService;
import com.qc.sys.vo.MenuVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("menu")
public class SysMenuController {

    @Resource
    private SysMenuService menuService;

    /**
     * 查询菜单和权限
     */
    @GetMapping("loadAllMenu")
    public Object loadAllMenu(MenuVo menuVo){
        return this.menuService.loadAllMenu(menuVo);
    }

    /**
     * 查询菜单和权限
     */
    @GetMapping("loadMenu")
    public Object loadMenu(MenuVo menuVo){
        List<SysMenu> menus = this.menuService.queryAllMenuForList();
        return new DataGridView(Long.valueOf(menus.size()),menus);
    }

    /**
     * 查询部门最大的排序码
     * */
    @GetMapping("queryMenuMaxOrderNum")
    public Object queryMenuMaxOrderNum(){
        Integer maxOrderNum = menuService.queryMenuMaxOrderNum();
        return new DataGridView(maxOrderNum+1);
    }

    /**
     * 添加部门
     * */
    @PostMapping("addMenu")
    public ResultObj addMenu(SysMenu menu){
        return menuService.saveMenu(menu);
    }

    /**
     * 根据部门id去查询部门
     * */
    @GetMapping("getMenuById")
    public Object getMenuById(Integer id){
        return new DataGridView(menuService.getById(id));
    }

    /**
     * 修改部门
     * */
    @PostMapping("updateMenu")
    public ResultObj updateMenu(SysMenu menu){
        return menuService.updateMenu(menu);
    }

    /**
     * 根据id查询当前部门是否有子部门
     * */
    @GetMapping("getMenuChildrenCountById")
    public Object getMenuChildrenCountById(Integer id){
        Integer count = this.menuService.queryMenuChildrenCountById(id);
        return new DataGridView(count);
    }

    /**
     * 根据id删除部门
     * */
    @PostMapping("deleteMenu")
    public ResultObj deleteMenu(Integer id){
        return this.menuService.deleteMenu(id);
    }
}
